import uiautomator2 as u2
import time 
from SDKTest import AI as SDK  #AI的接口


class MyClass:

    def __init__(self,d):
        self.d=d
        self.front_Msg = "上条消息"
        pass

    #获取最新消息
    def GetNewMsg(self):
       a1 = self.d( resourceId="com.tencent.mm:id/bve",className="androidx.recyclerview.widget.RecyclerView")
       #再次尝试获取其子级
       # print("长度：",len(a1))
       Alen =  a1.info['childCount']
       # print("长度：",num)

       a2 = a1.child(index=Alen-1)
    
       t =0
       #判断是否有时间窗口
       if a2.info['childCount'] >1:#如果子组件的数量大于一则暂时认为上面有时间窗口
            t=1
       else:
            t=0
       a3 = a2.child(index=t).child(index=1)
       #判断这条消息是否是自己的消息
       if a3.info["className"]=="android.widget.LinearLayout":
            print("这是自己的消息")
            return "你闭嘴"
       else:
            a4=a3.child(index=1).child()
       return str(a4.info['text'])
        






class AutoReply:#自动回复类
   
    def __init__(self,):
        self.AI =SDK()


    #发送消息
    def SendMsg(self,send_str):
       d.clear_text()                                      #清除输入框
       d.xpath('//android.widget.EditText').set_text(send_str)

    #因为一般AI的回复很长,而微信信息有长度限制所以循环发送信息
    def CirculateSedMsg(self,msg):
       reply_date = self.AI.AIReply(msg)##请求AI回复
       
       d.xpath('//android.widget.EditText').click()#点输入框
       for i in  reply_date:
           i=i.strip()
           if i!="":  #因为如果是空格的话微信不会出现发送键                           
            self.SendMsg(i)
            time.sleep(2)
            d.xpath('//android.widget.Button').click()##发送消息
            time.sleep(2)
            d.press("back")                   #点击返回键

################################################################################################################################
d = u2.connect() # connect to device

dialogue_object_name = "校外求生挑战"#对话对象名

# 设置查找元素等待时间，单位秒
d.implicitly_wait(5)
d.screen_on()#打开屏幕
d.press("home")#回到主页
d.app_start("com.tencent.mm",stop=True)#打开微信
d(text=dialogue_object_name).click() #点开群聊

auto_reply=AutoReply()
myclass=MyClass(d)
front_msg = "上条消息"


auto_reply.CirculateSedMsg("请介绍一下你自己并讲一下你的发展历史")

while True:
    
    now_msg= myclass.GetNewMsg()#获取最新的一条消息
    print(front_msg !=now_msg)
    if ((front_msg !=now_msg) & (now_msg!="你闭嘴")) :

        auto_reply.CirculateSedMsg(now_msg)#回复对话

        front_msg = now_msg
        print("发送消息")
        pass
    # print("信息：",now_msg)



    time.sleep(10)





print("结束")






    




